package cn.neusoft.filter;

import cn.neusoft.vo.ResultBean;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//解决跨域问题
@WebServlet("/*")
public class CrosFilter extends HttpFilter {
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		HttpServletResponse response=(HttpServletResponse) res;
		//这里来允许手机端进行跨域
		//这里来拿到，来进行访问的地址
		String origin=((HttpServletRequest) req).getHeader("Origin");
		System.out.println("origin----"+origin);

		//当进行接口测试的时候，直接将origin置为空
		if( origin==null|| origin.contains("http://localhost:8888") ||
				origin.contains("http://localhost:9999")) {
			//对这个端口进行访问
			response.setHeader("Access-Control-Allow-Origin",origin);
			response.setHeader("Access-Control-Allow-Credentials", "true");
			response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
			response.setHeader("Access-Control-Max-Age", "3628800");
			response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization,content-type");
			chain.doFilter(req, res);
		} else {
			//下面这就是不允许放行
			response.setContentType("application/json;charset=UTF-8");
			ObjectMapper objectMapper=new ObjectMapper();
			String json=objectMapper.writeValueAsString(ResultBean.ERROR("不允许跨域"));
			response.getWriter().write(json);
		}
	}
}
